# -*- coding: utf-8 -*-
"""
Author: chen xi
Date: 2025/4/24 下午2:09
File: config_utils.py
"""
import configparser
import os


def find_directory(directory: str) -> str:
	# 获取当前脚本的绝对路径
	script_path = os.path.abspath(__file__)
	# 获取当前脚本所在的目录
	current_dir = os.path.dirname(script_path)
	
	# 逐级向上查找直到找到包含 'data' 目录的目录
	while True:
		data_dir = os.path.join(current_dir, directory)
		if os.path.isdir(data_dir):
			# 如果找到了 'data' 目录，返回其完整路径
			return data_dir
		else:
			# 如果当前目录已经是根目录，但仍未找到 'data' 目录，则抛出异常
			if current_dir == os.path.dirname(current_dir):
				raise FileNotFoundError("Could not find 'data' directory.")
			# 否则，继续在父目录中查找
			current_dir = os.path.dirname(current_dir)


def read_config(file_path):
	"""
	读取 INI 配置文件。

	:param file_path: INI 文件的路径
	:return: 配置对象
	"""
	config = configparser.ConfigParser()
	with open(file_path, 'r', encoding='utf-8') as file:
		config.read_file(file)
	return config


def to_dict(_config):
	# 转换为嵌套字典
	devices_dict = {section: dict(_config[section]) for section in _config.sections()}
	return devices_dict


if __name__ == "__main__":
	config = read_config(os.path.join(find_directory("config"), "配网设备.ini"))
	print(os.path.dirname(find_directory("config")))
